package com.itheima.controller;

import com.itheima.contants.Code;
import com.itheima.exceptions.BusinessException;
import com.itheima.exceptions.SystemException;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RestControllerAdvice;

/**
 * @author 陆小根
 * date: 2022/05/04
 * Description:
 */
@RestControllerAdvice // 用于标识当前类为Rest风格对应的异常处理器
public class ProjectExceptionAdvice {

  // @ExceptionHandler(Exception.class)
  @ExceptionHandler(SystemException.class)
  public Result doSystemException(SystemException ex) {
    // 记录日志
    // 发送消息给运维
    // 发送邮箱给开发人员，ex对象发送给开发人员
    return new Result(ex.getCode(), null, ex.getMessage());
  }

  @ExceptionHandler(BusinessException.class)
  public Result doBusinessException(BusinessException ex){
    // 给用户友好的提示
    return new Result(ex.getCode(),null,ex.getMessage());
  }

  // 除了自定义的异常处理器，保留对Exception类型的异常处理，用于处理非预期的异常
  @ExceptionHandler(Exception.class)
  public Result doException(Exception ex) {
    //记录日志
    //发送消息给运维
    //发送邮件给开发人员,ex对象发送给开发人员
    return new Result(Code.SYSTEM_UNKNOWN_ERR, null, "系统繁忙，你稍后再试");
  }

}
